
// function createArr(length: number, value: any): Array<any> {
//   let res: any[] = []
//   for(let i = 0; i < length; i++){
//     res.push(value)
//   }
//   return res
// }

// const arr: any[] = createArr(10, 'A')


// 泛型
// T 变量可以理解为一个可变的类型，类型取决于调用时传递的类型
function createArr<T>(length: number, value: T): Array<T> {
  let res: T[] = []
  for(let i = 0; i < length; i++){
    res.push(value)
  }
  return res
}

const arr:string[] = createArr<string>(5, 'A')
const arr1:number[] = createArr<number>(5, 666)

interface iObj {
  name: string
  sex: string
}
const arr2:iObj[] = createArr<iObj>(10, {name: '张一',sex: '女'})


let list = [1,'好好努力，别考试就你一个人不过,情人节就你一个人过。']
let list1: Array<number | string> = [1,'好好努力，别考试就你一个人不过,情人节就你一个人过。']
let list2: (number | string)[] = [1,'好好努力，别考试就你一个人不过,情人节就你一个人过。']

// 元组: 明确已知元素的个数以及每个元素的数据类型的时候可以使用元组
// 元组中定义了两个数据的类型，也就意味着不能有第三个
let list3:[number,string] = [1 ,'你好世界']
